package com.share.design.adapter;

/**
 *
 * 类的适配器模式：当希望将一个类转换成满足另一个新接口的类时，可以使用类的适配器模式，创建一个新类，继承原有的类，实现新的接口即可。
 * 对象的适配器模式：当希望将一个对象转换成满足另一个新接口的对象时，可以创建一个Wrapper类，持有原类的一个实例，在Wrapper类的方法中，调用实例的方法就行。
 * 接口的适配器模式：当不希望实现一个接口中所有的方法时，可以创建一个抽象类Wrapper，实现所有方法，我们写别的类的时候，继承抽象类即可。
 * author:caifan
 * date:2020/2/4
 */
public class AdapterClient {

    public static void main(String[] args) {
        /*
         * 类适配器，单独加一个类与要适配的方法名相同然后修改实现
         */
        Targetable adapter = new Adapter();
        adapter.method1();
        adapter.method2();

        /*
         * 对象适配器，一个类的方法使用传递对象的方法实现
         */
        Source source = new Source();
        Targetable targetable = new Wrapper(source);
        targetable.method1();//适配方法
        targetable.method2();

        /*
         接口适配
         */
        Targetable targetable1 = new TargetSub1();
        Targetable targetable2 = new TargetSub2();
        targetable1.method1();
//        targetable1.method2();
//        targetable2.method1();
        targetable2.method2();

    }


}
